package com.wenjie.original.flex_config.baseInterface;

import com.mybatisflex.core.query.QueryCondition;
import com.mybatisflex.core.query.QueryOrderBy;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.service.IService;
import com.wenjie.original.entity.common.vo.IResVo;
import com.wenjie.original.entity.common.vo.ISelVo;
import com.wenjie.original.entity.common.vo.RestBaseVo;

/**
 * @author wenjie
 * @Description 对 mybatis-flex的通用Iservice进行封装
 * @date 2024/5/23 11:33
 */
public interface CusIService<T> extends IService<T> {

    /**
     * @Description 对数据进行处理
     * @author wenjie
     * @date 2024/5/22 21:18
     */
    <S extends T> RestBaseVo<S> list(QueryWrapper queryWrapper, Integer pn, Integer ps, Class<S> tClass);


    /**
     * @Description 对数据进行处理
     * @author wenjie
     * @date 2024/5/22 21:18
     */
    <S extends T> RestBaseVo<S> list(QueryWrapper queryWrapper, Class<S> tClass);

    /**
     * @Description 通过selVo获取RestBaseVo<RestVo>
     * @author wenjie
     * @date 2024/6/11 14:38
     */
    RestBaseVo list(ISelVo<T> ISelVo);

    /**
     * @Description 通过selVo获取RestBaseVo<tclass>
     * @author wenjie
     * @date 2024/6/11 14:44
     */
    <S extends IResVo> RestBaseVo<S> list(ISelVo<T> ISelVo, Class<S> tClass);

    /**
     * @Description 通过selVo获取RestBaseVo<tclass>
     * @author wenjie
     * @date 2024/6/11 14:44
     */
    <S extends IResVo> RestBaseVo<S> list(ISelVo<T> ISelVo, QueryCondition queryCondition, Class<S> tClass);

    /**
     * @Description 通过selVo获取RestBaseVo<tclass>
     * @author wenjie
     * @date 2024/6/11 14:44
     */
    <S extends IResVo> RestBaseVo<S> list(ISelVo<T> ISelVo, QueryOrderBy[] queryOrders, Class<S> tClass);

    /**
     * @Description 通过selVo获取RestBaseVo<tclass>
     * @author wenjie
     * @date 2024/6/11 14:44
     */
    <S extends IResVo> RestBaseVo<S> list(ISelVo<T> ISelVo, QueryCondition queryCondition, QueryOrderBy[] queryOrderS, Class<S> tClass);


}
